package com.bigdata.core.action

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Demo7_reduce {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("countByKey").setMaster("local")
    val sc = new SparkContext(conf)
    sc.setLogLevel("error")

    val rdd: RDD[Int] = sc.makeRDD(Array[Int](1, 2, 3, 4, 5))
    // reduceByKey 把相同key的一些数据分为一组，对这一组内的数据做reduce聚合操作

    // reduce 对前2个值做函数计算，用得到的结果作为第一个参数再次参与计算。
    val result: Int = rdd.reduce((v1: Int, v2: Int) => {
      println(s"v1:$v1----v2:$v2")
      v1 + v2
    })
    //    val result: Int = rdd.reduce(_ + _)
    println(result)

  }
}
